Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The
napi_external
that maintains the watch on a file is closured into the stop function returned byfsevents.watch
.When that
napi_external
is garbage collected, the callback that was passed in is released and becomes uncallable. When it is called depsite this, thenapi_env
that is passed in isNULL
which is intended by N-API as a signal that the function is no longer usable.I ignored it in the past, because I always retain the stop function. However a test-script like the one provided provokes this. When garbage collection happens, the
napi_external
is cleared. However there may still be events in the pipeline. And that in turn triggers the crash in #355 .I am now handling the
napi_env
asNULL
signal properly by just dropping the event. In consequence, if you do not retain the stop function event reporting simply stops. And this will happen fairly quickly.fixes #355